博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用 Flask 来写个轻博客 (22) — 实现博客文章的添加和编辑页面
阅读量:6105 次
发布时间:2019-06-21

本文共 3828 字,大约阅读时间需要 12 分钟。

Blog 项目源码:

目录

前文列表

新建表单

  • jmilkfansblog/forms.py
    博客文章的新建和编辑的表单非常简单, 只需要输入 title 和 content 就可以了.
class PostForm(Form):    """Post Form."""    title = StringField('Title', [DataRequired(), Length(max=255)])    text = TextAreaField('Blog Content', [DataRequired()])

新建视图函数

博客文章的添加和编辑仍然属于蓝图 blog 的功能集, 所以我们会在控制器 blog 模块中定义新的视图函数

  • jmilkfansblog/controller/blog.py
@blog_blueprint.route('/new', methods=['GET', 'POST'])def new_post():    """View function for new_port."""    form = PostForm()    if form.validate_on_submit():        new_post = Post(id=str(uuid4()), title=form.title.data)        new_post.text = form.text.data        new_post.publish_date = datetime.now()        db.session.add(new_post)        db.session.commit()        return redirect(url_for('blog.home'))    return render_template('new_post.html',                           form=form)@blog_blueprint.route('/edit/
', methods=['GET', 'POST'])def edit_post(id): """View function for edit_post.""" post = Post.query.get_or_404(id) form = PostForm() if form.validate_on_submit(): post.title = form.title.data post.text = form.text.data post.publish_date = datetime.now() # Update the post db.session.add(post) db.session.commit() return redirect(url_for('blog.post', post_id=post.id)) form.title.data = post.title form.text.data = post.text return render_template('edit_post.html', form=form, post=post)

NOTE 1: 添加博客文章时, 如果添加成功了就将输入到表单中的内容写入到数据库并将表单的数据传入 new_post 模板.

NOTE 2: 编辑博客文章时, 在表单的输入框中会含有原来的博客内容, 当编辑成功后会将新的博客内容写入数据库并重定向到文章页面.

新建模板

  • jmilkfansblog/template/blog/new_post.html
{% block title %}New Post{% endblock %}{% block body %}

Create A New Post

{
{ form.hidden_tag() }}
{
{ form.title.label }} {% if form.title.errors %} {% for e in form.title.errors %}

{

{ e }}

{% endfor %} {% endif %} {
{ form.title(class_='form-control') }}
{
{ form.text.label }} {% if form.text.errors %} {% for e in form.text.errors %}

{

{ e }}

{% endfor %} {% endif %} {
{ form.text(id="editor", class_='form-contril') }}
{% endblock %}{% block js %}{% endblock %}
  • jmilkfansblog/template/blog/edit_post.html
{% extends "base.html" %}{% block title %}Edit Post{% endblock %}{% block body %}

Edit the Post

{
{ form.hidden_tag() }}
{
{ form.title.label }} {% if form.title.errors %} {% for e in form.title.errors %}

{

{ e }}

{% endfor %} {% endif %} {
{ form.title(class_='form-control', value=post.title) }}
{
{ form.text.label }} {% if form.text.errors %} {% for e in form.text.errors %}

{

{ e }}

{% endfor %} {% endif %} {
{ form.text(id="editor", class_='form-contril') }}
{% endblock %}{% block js %}{% endblock %}

NOTE: 在模板 new_post 和 edit_post 中都加入了一个所见即所得 (WYSIWYG) 的博客文章编辑器 CKEditor, 该编辑器是一个 JavaScript 文件 <script src="//cdn.ckeditor.com/4.4.7/standard/ckeditor.js"></script>, CKEditor 的安装和使用都是非常方便的.

在博客文章页面添加 New 和 Edit 按钮

{% block body %}

{
{ post.title }}

Written By {

{ post.users.username }} on {
{ post.publish_date }}

{

{ post.text | safe }}

New
...

NOTE : 由编辑器 CKEditor 提交的博客文章内容会被转换成为 HTML 被存放在数据库中, 所以需要使用过滤器 safe 来过滤并显示在页面中.

实现效果

New 和 Edit 的按钮:

这里写图片描述
Create a new post:
这里写图片描述
Edit a new post:
这里写图片描述

转载于:https://www.cnblogs.com/jmilkfan-fanguiju/p/10589857.html

你可能感兴趣的文章
关于SaveChanges
查看>>
php7扩展开发 一 获取参数
查看>>
处女座与复读机
查看>>
Laravel 5.2数据库--迁移migration
查看>>
ExtJs Extender controls 不错的例子
查看>>
html的基础知识
查看>>
一个菜鸟正在用SSH写一个论坛(2)
查看>>
Mybatis Sql片段的应用
查看>>
突发奇想20150126
查看>>
Nginx + CGI/FastCGI + C/Cpp
查看>>
学习笔记------jsp页面与jsp标记
查看>>
DS博客作业02--线性表
查看>>
第三届ACM山东省赛I题_Chess_STL
查看>>
jQuery each和js forEach用法比较
查看>>
前端笔记-作用域链的一些理解加记录(JS高级程序设计读书笔记1)
查看>>
最新电Call记录统计-full hash join用法
查看>>
PHP 实战之设计模式:PHP 中的设计模式
查看>>
使用 Python 创建你自己的 Shell(下)
查看>>
Linux命令行–理解Linux文件权限(转)
查看>>
[Hadoop大数据]——Hive连接JOIN用例详解
查看>>